#pragma once 
#include<iostream>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<sys/types.h>
#include<cstring>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<cstdio>
//#include<string>

#define SIZE 100
#define STYLE '#'
#define SLEEP_TIME 50*1000  //50毫秒

#define MAX_DATA 1024*1024
#define DOWN_SPEED 1024*10

using namespace std;

const char* pathname="/home/common_whb/lesson33/shm";
const char* filename="fifo";

int proj_id=666666;

int size=4096;//所开辟出共享内存空间的大小

int Getkey()
{
    key_t key=ftok(pathname,proj_id);
    return key;
}

void progress_bar()
{
    int rate=0;
    char bar[SIZE+1];
   //char bar[SIZE+1]={0};//多出来的那个给'\0'
   memset(bar,'\0',sizeof(bar));//数组初始化

   char arr[4]={'|','/','-','\\'};
  // printf("%s",arr);
  // int len =strlen(arr);
   // printf("%d\n",strlen(arr));  它的长度居然是6
   while(rate<=100)
   {
       printf("[%-100s][%d%%][%c]\r",bar,rate,arr[rate%4]);//'\r'表示回车   '\n'表示回车+换行  换行可以刷新缓冲区
       fflush(stdout);

       usleep(SLEEP_TIME);

       bar[rate++]=STYLE;
   }
    printf("\n");
}

//创建一个命名管道，来使共享内存的通信拥有同步性
bool MakeFifo()
{
    //1.创建命名管道
    int ret=mkfifo(filename,0666);
    if(ret<0)
    {
        cout<<"error:"<<errno<<",strerror:"<<strerror(errno)<<endl;
        return false;
    }
    cout<<"命名管道文件创建成功..."<<endl;

    return true;
}